#ifndef LIBRARY_RMANAGER_H
#define LIBRARY_RMANAGER_H

#include "list.h"

namespace Library
{

class PLIBEXP ResourceManager
{
	public:
					ResourceManager();
					ResourceManager(const String & workingDirectory);
					~ResourceManager();

		uint32		open(const String & filename);
		void		close(uint32 id);

		void *		get(const String & name);
		bool8		release(void * resource);

	private:
		String							m_cwd;
		List<pResourceFile> *			m_files;
		ListIterator<pResourceFile> *	m_iterator;

	// prohibited
	private:
		ResourceManager(ResourceManager &);
		ResourceManager & operator=(ResourceManager &);
}; // class Manager


//----------------------------------------------------------------------------
// Documentation, prohibited methods (unimplemented)
//

/**
 * @fn Library::ResourceManager::Manager(Library::ResourceManager &)
 *
 * This method is reserved and unimplemented.  It has been defined for
 * Orthodox Canonical Form (OCF) compliance to prevent shallow object copies
 * from inadvertent use.
 */

/**
 * @fn Library::ResourceManager & Library::ResourceManager::operator=(Library::ResourceManager &)
 *
 * This method is reserved and unimplemented.  It has been defined for
 * Orthodox Canonical Form (OCF) compliance to prevent shallow object copies
 * from inadvertent use.
 */

}; // namespace Library

#endif
